home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 3 / Gold Medal Software - Volume 3 (Gold Medal) (1994).iso / graphics / svgapv20.arj / SVGADEMO.BAS < prev    next >
BASIC Source File  |  1994-03-11  |  23KB  |  690 lines

  1. '****************************************************************************
  2. '*
  3. '*      'SVGAQB' & 'SVGAPV' A Super VGA Graphics Librarys for use with
  4. '*      MS QuickBASIC 4.X and MS PDS/VBDOS
  5. '*      Copyright 1993-1994 by Stephen L. Balkum and Daniel A. Sill
  6. '*
  7. '*      MS, QuickBASIC, PDS, and VBDOS are registered trademarks of
  8. '*      Microsoft Corporation. GIF and 'Graphics Interchange Format' are
  9. '*      trademarks (TM) ofCompuServe, Incorporated, an H&R Block Company.
  10. '*
  11. '*    **************** UNREGISTERED SHAREWARE VERSION **********************
  12. '*    * FOR EVALUATION ONLY. NOT FOR RESALE IN ANY FORM. SOFTWARE WRITTEN  *
  13. '*    * USING THIS UNREGISTERED SHAREWARE GRAPHICS LIBRARY MAY NOT BY SOLD *
  14. '*    * OR USED FOR ANY PURPOSE OTHER THAN THE EVALUATION OF THIS LIBRARY. *
  15. '*    **********************************************************************
  16. '*
  17. '*    **************** NO WARRANTIES AND NO LIABILITY **********************
  18. '*    * Stephen L. Balkum and Daniel A. Sill provide no warranties, either *
  19. '*    * expressed or implied, of merchant ability, or fitness, for a       *
  20. '*    * particular use or purpose of this SOFTWARE and documentation.      *
  21. '*    * In no event shall Stephen L. Balkum or Daniel A. Sill be held      *
  22. '*    * liable for any damages resulting from the use or misuse of the     *
  23. '*    * SOFTWARE and documentation.                                        *
  24. '*    **********************************************************************
  25. '*
  26. '*    ************** U.S. GOVERNMENT RESTRICTED RIGHTS *********************
  27. '*    * Use, duplication, or disclosure of the SOFTWARE and documentation  *
  28. '*    * by the U.S. Government is subject to the restrictions as set forth *
  29. '*    * in subparagraph (c)(1)(ii) of the Rights in Technical Data and     *
  30. '*    * Computer Software clause at DFARS 252.227-7013.                    *
  31. '*    * Contractor/manufacturer is Stephen L. Balkum and Daniel A. Sill,   *
  32. '*    * P.O. Box 7704, Austin, Texas 78713-7704                            *
  33. '*    **********************************************************************
  34. '*
  35. '*    **********************************************************************
  36. '*    * By using this SOFTWARE or documentation, you agree to the above    *
  37. '*    * terms and conditions.                                              *
  38. '*    **********************************************************************
  39. '*
  40. '****************************************************************************
  41.  
  42.  
  43.     REM $INCLUDE: 'SVGABC.BI'
  44.     REM $INCLUDE: 'SVGADEMO.BI'
  45.     CLEAR
  46.  
  47.     REDIM POINTARRY3D(0 TO 13) AS P3Dtype
  48.     REDIM PLAYARRY(0 TO 13) AS P3Dtype
  49.     REDIM PLOTARRY(0 TO 13) AS P2DType
  50.     REDIM OPLOTARRY(0 TO 13) AS P2DType
  51.     REDIM GFXBLK1(0 TO 10000) AS INTEGER
  52.     REDIM GFXBLK2(0 TO 19000) AS INTEGER
  53.     REDIM GFXBLK3(0 TO 19000) AS INTEGER
  54.                                     
  55.     '*************************************************************************
  56.     '* SAVE THE STARTING VIDEOMODE AND SET IT TO MODE 3.
  57.     '*************************************************************************
  58.     STARTVIDEOMODE = VIDEOMODEGET
  59.     DUMMY = RESTEXT
  60.     CLS
  61.     FOR A = 0 TO 33
  62.         DUMMY$ = INKEY$  '* CLEAR THE KEYBOARD BUFFER
  63.     NEXT A
  64.     '*************************************************************************
  65.     '* MOVE THE DOS CURSOR TO THE TOP LEFT TO START THE PROGRAM AND SAY HELLO
  66.     '*************************************************************************
  67.     LOCATE 1, 1
  68.     PRINT "'SVGAQB.LIB' A SuperVGA Graphics Library For Use With MS QuickBasic 4.5"
  69.     LOCATE 2, 1
  70.     PRINT "'SVGAPV.LIB' A SuperVGA Graphics Library For Use With MS PDS and VBDOS"
  71.  
  72.     LOCATE 4, 10
  73.     PRINT "Copyright 1993 by Stephen L. Balkum and Daniel A. Sill"
  74.     LOCATE 12, 25
  75.     PRINT "Demonstration/Example Program"
  76.     LOCATE 23, 1
  77.     PRINT "Press a key to begin the demo..."
  78.     GETKEY (RET$)
  79.     CLS
  80.  
  81.     '*************************************************************************
  82.     '* LET'S ID THE PROCESSOR FIRST AS THE LIBRARY REQUIRES A 386 OR BETTER.
  83.     '*************************************************************************
  84.     'LOCATE 1, 1
  85.     CPU = WHICHCPU
  86.     CPU$ = STR$(CPU)
  87.     L = LEN(CPU$)
  88.     CPU$ = RIGHT$(CPU$, L - 1)
  89.     IF CPU < 386 THEN
  90.         PRINT "Sorry, this library requires a 80386 or better processor."
  91.         PRINT "Processor is identified as a 80"; CPU$; "."
  92.         PRINT "Demo program will be terminated."
  93.         PRINT
  94.         PRINT "Press a key..."
  95.         SOUND 100, 5
  96.         WHILE INKEY$ = ""
  97.         WEND
  98.         VIDEOMODESET (STARTVIDEOMODE)
  99.         CLEAR
  100.         END
  101.     END IF
  102.  
  103.     '*************************************************************************
  104.     '* LET'S ID THE VIDEO CARD/CHIP AS THE LIBRARY REQUIRES A SUPERVGA ADAPTER.
  105.     '*************************************************************************
  106.     VGA = WHICHVGA
  107.     PRINT "Microprocessor is identified as a 80"; CPU$; "."
  108.     PRINT
  109.     SELECT CASE VGA
  110.         CASE IS = 1
  111.             VGA$ = "Acumos AVGA2/3 SuperVGA"
  112.         CASE IS = 2
  113.             VGA$ = "ATI Technologies 18/28/38/68800 SuperVGA"
  114.         CASE IS = 3
  115.             VGA$ = "Ahead V5000 ver A SuperVGA"
  116.         CASE IS = 4
  117.             VGA$ = "Ahead V5000 ver B SuperVGA"
  118.         CASE IS = 5
  119.             VGA$ = "Chips and Technologies 82C450/1/2/3/5/6/7 SuperVGA"
  120.         CASE IS = 6
  121.             VGA$ = "Cirrus Logic CL-GD 5xx,6xx,28xx,54xx,62xx SuperVGA"
  122.         CASE IS = 7
  123.             VGA$ = "Everex Ev236/6xx Micro Enhancer SuperVGA"
  124.         CASE IS = 8
  125.             VGA$ = "Genoa 61/62/63/64/6600 SuperVGA"
  126.         CASE IS = 9
  127.             VGA$ = "NCR 77C21/22/22E/22E+ SuperVGA"
  128.         CASE IS = 10
  129.             VGA$ = "Oak Technologies OTI-037C/067/077/087 SuperVGA"
  130.         CASE IS = 11
  131.             VGA$ = "Paradise/Western Digital PVGA1A,WD90C00/1x/2x/3x SuperVGA"
  132.         CASE IS = 12
  133.             VGA$ = "Realtek RT3106 SuperVGA"
  134.         CASE IS = 13
  135.             VGA$ = "Trident 8800CS,8900B/C/CL/CX,90x0 SuperVGA"
  136.         CASE IS = 14
  137.             VGA$ = "Tseng Labs ET3000-AX/BX/BP SuperVGA"
  138.         CASE IS = 15
  139.             VGA$ = "Tseng Labs ET4000/W32/W32I SuperVGA"
  140.         CASE IS = 16
  141.             VGA$ = "VESA compatible SuperVGA"
  142.         CASE IS = 17
  143.             VGA$ = "Video 7 HT-208/16 SuperVGA"
  144.         CASE IS = 18
  145.             VGA$ = "Avance Logic AL2101 SuperVGA"
  146.         CASE IS = 19
  147.             VGA$ = "MXIC MX68000/10 SuperVGA"
  148.         CASE IS = 20
  149.             VGA$ = "Primus P2000 SuperVGA"
  150.         CASE ELSE
  151.             VGA$ = "Unknown"
  152.             VGA = 0
  153.     END SELECT
  154.     IF VGA < 1 THEN
  155.         PRINT "Sorry, unable to identify video card or it is not a SuperVGA video adapter."
  156.         PRINT "Demo program will be terminated."
  157.         PRINT
  158.         PRINT "Press a key..."
  159.         SOUND 100, 5
  160.         WHILE INKEY$ = ""
  161.         WEND
  162.         VIDEOMODESET (STARTVIDEOMODE)
  163.         CLEAR
  164.         END
  165.     ELSE
  166.         PRINT "Video card/chip is identified as a "; VGA$; "."
  167.     END IF
  168.  
  169.     '*************************************************************************
  170.     '* LET'S SEE THE HOW MUCH MEMORY IS INSTALLED ON THE SUPER VGA ADAPTER.
  171.     '*************************************************************************
  172.     VIDEOMEMORY = WHICHMEM
  173.     MEM$ = STR$(VIDEOMEMORY)
  174.     MEM$ = RIGHT$(MEM$, LEN(MEM$) - 1) + " kB"
  175.     IF VIDEOMEMORY < 1 THEN
  176.         PRINT "Sorry, unable to identify the amount of installed video memory."
  177.         PRINT "Demo program will be terminated."
  178.         PRINT
  179.         PRINT "Press a key..."
  180.         SOUND 100, 5
  181.         WHILE INKEY$ = ""
  182.         WEND
  183.         VIDEOMODESET (STARTVIDEOMODE)
  184.         CLEAR
  185.         END
  186.     ELSE
  187.         PRINT "Installed video memory identified as "; MEM$; "."
  188.     END IF
  189.  
  190.     '*************************************************************************
  191.     '* LET'S TELL THE USER WHAT THE HIGHEST RESOLUTION THAT THE VIDEO CARD
  192.     '* AND ITS INSTALLED MEMORY CARD IS CAPABLE OF. THE MONITOR MUST BE ABLE
  193.     '* TO SUPPORT THOSE MODES TOO !
  194.     '*************************************************************************
  195.     PRINT "Video card and installed memory is capable of the following resolutions:"
  196.     SELECT CASE VIDEOMEMORY
  197.         CASE IS > 1023
  198.             PRINT TAB(4); "320x200 in 256 colors"
  199.             PRINT TAB(4); "640x400 in 256 colors"
  200.             PRINT TAB(4); "640x480 in 256 colors"
  201.             PRINT TAB(4); "800x600 in 256 colors"
  202.             PRINT TAB(4); "1024x768 in 256 colors"
  203.             MAX = 4
  204.         CASE IS > 511
  205.             PRINT TAB(4); "320x200 in 256 colors"
  206.             PRINT TAB(4); "640x400 in 256 colors"
  207.             PRINT TAB(4); "640x480 in 256 colors"
  208.             PRINT TAB(4); "800x600 in 256 colors"
  209.             MAX = 3
  210.         CASE ELSE
  211.             PRINT TAB(4); "320x200 in 256 colors"
  212.             PRINT TAB(4); "640x400 in 256 colors"
  213.             MAX = 1
  214.     END SELECT
  215.     PRINT
  216.     PRINT "PLEASE keep in mind that not all monitors support all resolutions."
  217.     PRINT
  218.  
  219.     '*************************************************************************
  220.     '* LET'S LOOK FOR A MOUSE. IF WE FIND ONE, TELL ALL ABOUT IT
  221.     '*************************************************************************
  222.     MOUSE = WHICHMOUSE
  223.     IF MOUSE > 0 THEN
  224.         MOUSEINFO MJV, MNV, TP, I
  225.         VER$ = STR$(MNV)
  226.         L = LEN(VER$)
  227.         VER$ = STR$(MJV) + "." + RIGHT$(VER$, L - 1)
  228.         VER$ = "Software driver version is" + VER$ + " (Microsoft equivalent version)."
  229.         SELECT CASE TP
  230.             CASE IS = 1
  231.                 TYPE$ = "bus mouse"
  232.             CASE IS = 2
  233.                 TYPE$ = "serial mouse"
  234.             CASE IS = 3
  235.                 TYPE$ = "Inport mouse"
  236.             CASE IS = 4
  237.                 TYPE$ = "PS/2 mouse"
  238.             CASE IS = 5
  239.                 TYPE$ = "HP mouse"
  240.             CASE ELSE
  241.                 TYPE$ = "unknown type"
  242.         END SELECT
  243.         PRINT "Microsoft compatible " + TYPE$ + " detected with" + STR$(MOUSE) + " buttons on IRQ" + STR$(I) + "."
  244.         PRINT VER$
  245.     ELSE
  246.         PRINT "No Microsoft compatible mouse detected."
  247.     END IF
  248.     PRINT
  249.  
  250.     '*************************************************************************
  251.     '* LET'S LOOK FOR JOYSTICKS
  252.     '*************************************************************************
  253.     JOYSTICK = WHICHJOYSTICK
  254.     SELECT CASE JOYSTICK
  255.         CASE IS = -1
  256.             A$ = "No joystick port detected or no joystick BIOS support present."
  257.         CASE IS = 0
  258.             A$ = "No joystick detected."
  259.         CASE IS = 1
  260.             A$ = "Joystick A is present and available."
  261.         CASE IS = 2
  262.             A$ = "Joystick B is present and available."
  263.         CASE IS = 3
  264.             A$ = "Both Joystick A and Joystick B are present and available."
  265.     END SELECT
  266.     PRINT A$
  267.     PRINT
  268.     PRINT "Press a key..."
  269.     GETKEY RET$
  270.  
  271.     '*************************************************************************
  272.     '* LET'S GET DOWN TO BUSINESS!
  273.     '*************************************************************************
  274.     RES = 1
  275.     ENDIT = 0
  276.  
  277.     '*************************************************************************
  278.     '* INIT ALTERNATE MOUSE CURSORS
  279.     '*************************************************************************
  280.     FOR I = 1 TO 386
  281.         READ A
  282.         MID$(MAGMOUSECURSOR, I, 1) = CHR$(A)
  283.     NEXT I
  284.     FOR I = 1 TO 386
  285.         READ A
  286.         MID$(BIGMOUSECURSOR, I, 1) = CHR$(A)
  287.     NEXT I
  288.     FOR I = 1 TO 386
  289.         READ A
  290.         MID$(STWMOUSECURSOR, I, 1) = CHR$(A)
  291.     NEXT I
  292.  
  293.     '*************************************************************************
  294.     '* INIT ALTERNATE COLOR PALETTES
  295.     '*************************************************************************
  296.     DUMMY = RES320
  297.     PALGET ORGPAL, 0, 255
  298.     PALCOPY ORGPAL, Pal, 0, 255
  299.     PALCOPY ORGPAL, PAL2, 0, 255
  300.     MYPI! = 8 * ATN(1) / 240
  301.     FOR Colr = 0 TO 239
  302.         R1 = 32 + SIN((Colr + 0) * MYPI!) * 31
  303.         G1 = 32 + SIN((Colr + 80) * MYPI!) * 31
  304.         B1 = 32 + SIN((Colr + 160) * MYPI!) * 31
  305.         R2 = 32 + SIN((Colr + 10) * MYPI!) * 31
  306.         G2 = 32 + SIN((Colr + 30) * MYPI!) * 31
  307.         B2 = 32 + SIN((Colr + 50) * MYPI!) * 31
  308.         OFFSET = ((Colr + 16) * 3)
  309.         MID$(Pal, OFFSET + 1, 1) = CHR$(R1)  '* RED
  310.         MID$(Pal, OFFSET + 2, 1) = CHR$(G1)  '* GREEN
  311.         MID$(Pal, OFFSET + 3, 1) = CHR$(B1)  '* BLUE
  312.         MID$(PAL2, OFFSET + 1, 1) = CHR$(R2)  '* RED
  313.         MID$(PAL2, OFFSET + 2, 1) = CHR$(G2)  '* GREEN
  314.         MID$(PAL2, OFFSET + 3, 1) = CHR$(B2)  '* BLUE
  315.     NEXT Colr
  316.     DUMMY = RESTEXT
  317.  
  318.     '*************************************************************************
  319.     '* HERE IS THE MAIN SELECTOR LOOP
  320.     '*************************************************************************
  321.     WHILE ENDIT = 0
  322.         RetVal$ = ""
  323.         CLS
  324.         SOUND 700, .75
  325.         SELECT CASE RES
  326.             CASE IS = 1
  327.                 RES$ = "320x200x256"
  328.             CASE IS = 2
  329.                 RES$ = "640x400x256"
  330.             CASE IS = 3
  331.                 RES$ = "640x480x256"
  332.             CASE IS = 4
  333.                 RES$ = "800x600x256"
  334.             CASE IS = 5
  335.                 RES$ = "1024x768x256"
  336.         END SELECT
  337.         PRINT "Please select the demo you would like to see in the " + RES$ + " resolution:"
  338.         PRINT
  339.         PRINT "(0)  Exit This Program"
  340.         PRINT
  341.         PRINT "(1)  Demo #1  The Primitive Drawing Routines"
  342.         PRINT "(2)  Demo #2  The Clipping Capabilities"
  343.         PRINT "(3)  Demo #3  The Fill Routines"
  344.         PRINT "(4)  Demo #4  The Palette Routines"
  345.         PRINT "(5)  Demo #5  The Block Routines"
  346.         PRINT "(6)  Demo #6  The Text Routines"
  347.         PRINT "(7)  Demo #7  The Scrolling Routines"
  348.         PRINT "(8)  Demo #8  The GIF (TM) Routines"
  349.         PRINT "(9)  Demo #9  The Mouse Routines"
  350.         PRINT "(10) Demo #10 The Joystick Routines"
  351.         PRINT "(11) Demo #11 The Two Dimensional Routines"
  352.         PRINT "(12) Demo #12 The Three Dimensional Routines"
  353.         PRINT "(13) The Grand Tour Of All Demos"
  354.         PRINT
  355.         SELECT CASE VIDEOMEMORY
  356.             CASE IS > 1023
  357.                 PRINT "(14) Use 320x200x256  Resolution"
  358.                 PRINT "(15) Use 640x400x256  Resolution"
  359.                 PRINT "(16) Use 640x480x256  Resolution"
  360.                 PRINT "(17) Use 800x600x256  Resolution"
  361.                 PRINT "(18) Use 1024x768x256 Resolution"
  362.                 MAX = 18
  363.             CASE IS > 511
  364.                 PRINT "(14) Use 320x200x256  Resolution"
  365.                 PRINT "(15) Use 640x400x256  Resolution"
  366.                 PRINT "(16) Use 640x480x256  Resolution"
  367.                 PRINT "(17) Use 800x600x256  Resolution"
  368.                 MAX = 17
  369.             CASE ELSE
  370.                 PRINT "(14) Use 320x200x256  Resolution"
  371.                 PRINT "(15) Use 640x400x256  Resolution"
  372.                 MAX = 15
  373.         END SELECT
  374.         A$ = ""
  375.         INPUT "Your Choice"; A$
  376.         KY = VAL(A$)
  377.         IF (A$ > "9") OR (A$ < "0") THEN
  378.             KY = -1
  379.         END IF
  380.         IF KY > MAX THEN
  381.             KY = -1
  382.         END IF
  383.         IF KY > 0 AND KY < 13 THEN
  384.             SELECT CASE RES
  385.                 CASE IS = 1
  386.                     OK = RES320
  387.                 CASE IS = 2
  388.                     OK = RES640L
  389.                 CASE IS = 3
  390.                     OK = RES640
  391.                 CASE IS = 4
  392.                     OK = RES800
  393.                 CASE IS = 5
  394.                     OK = RES1024
  395.             END SELECT
  396.             IF OK <> 1 THEN
  397.                 DUMMY = RESTEXT
  398.                 CLS
  399.                 SOUND 100, 5
  400.                 PRINT "Sorry, although your video card has enough memeory, it does"
  401.                 PRINT "not support this video mode. PRESS A KEY."
  402.                 GETKEY RET$
  403.                 KY = -1
  404.             END IF
  405.         END IF
  406.         SELECT CASE KY
  407.             CASE IS = 0
  408.                 ENDIT = 1
  409.             CASE IS = 1
  410.                 'DEMO #1
  411.                 DOPRIMS RetVal$
  412.                 DUMMY = RESTEXT
  413.             CASE IS = 2
  414.                 'DEMO #2
  415.                 DOCLIP RetVal$
  416.                 DUMMY = RESTEXT
  417.             CASE IS = 3
  418.                 'DEMO #3
  419.                 DOFILL RetVal$
  420.                 DUMMY = RESTEXT
  421.             CASE IS = 4
  422.                 'DEMO #4
  423.                 DOPAL RetVal$
  424.                 DUMMY = RESTEXT
  425.             CASE IS = 5
  426.                 'DEMO #5
  427.                 DOBLOCK RetVal$
  428.                 DUMMY = RESTEXT
  429.             CASE IS = 6
  430.                 'DEMO #6
  431.                 DOTEXT RetVal$
  432.                 DUMMY = RESTEXT
  433.             CASE IS = 7
  434.                 'DEMO #7
  435.                 DOSCROLL RetVal$
  436.                 DUMMY = RESTEXT
  437.             CASE IS = 8
  438.                 'DEMO #8
  439.                 DOGIF RetVal$
  440.                 DUMMY = RESTEXT
  441.             CASE IS = 9
  442.                 'DEMO #9
  443.                 DOMOUSE RetVal$
  444.                 DUMMY = RESTEXT
  445.             CASE IS = 10
  446.                 'DEMO #10
  447.                 DOJOYSTICK RetVal$
  448.                 DUMMY = RESTEXT
  449.             CASE IS = 11
  450.                 'DEMO #11
  451.                 DO2D RetVal$
  452.                 DUMMY = RESTEXT
  453.             CASE IS = 12
  454.                 'DEMO #12
  455.                 DO3D RetVal$
  456.                 DUMMY = RESTEXT
  457.             CASE IS = 13
  458.                 'DO THE GRAND TOUR OF ALL DEMOS!
  459.                 CLS
  460.                 PRINT "Press 'Q' To End Grand Tour At Any Time. Press 'S' To Skip To The Next"
  461.                 PRINT "Demo At Any Time. Press Any Other Key to Begin The Grand Tour..."
  462.                 GETKEY RET$
  463.                 IF RET$ = "Q" THEN
  464.                     GOTO EXITGRANDTOUR
  465.                 END IF
  466.  
  467.                 SELECT CASE RES
  468.                     CASE IS = 1
  469.                         OK = RES320
  470.                     CASE IS = 2
  471.                         OK = RES640L
  472.                     CASE IS = 3
  473.                         OK = RES640
  474.                     CASE IS = 4
  475.                         OK = RES800
  476.                     CASE IS = 5
  477.                         OK = RES1024
  478.                 END SELECT
  479.                 IF OK <> 1 THEN
  480.                     DUMMY = RESTEXT
  481.                     CLS
  482.                     SOUND 100, 5
  483.                     PRINT "Sorry, although your video card has enough memeory, it does"
  484.                     PRINT "not support this video mode. PRESS A KEY."
  485.                     GETKEY RET$
  486.                     GOTO EXITGRANDTOUR
  487.                 END IF
  488.                 'DEMO #1
  489.                 DOPRIMS RetVal$
  490.                 IF RetVal$ = "Q" THEN
  491.                     GOTO EXITGRANDTOUR
  492.                 END IF
  493.                 'DEMO #2
  494.                 DOCLIP RetVal$
  495.                 IF RetVal$ = "Q" THEN
  496.                     GOTO EXITGRANDTOUR
  497.                 END IF
  498.                 'DEMO #3
  499.                 DOFILL RetVal$
  500.                 IF RetVal$ = "Q" THEN
  501.                     GOTO EXITGRANDTOUR
  502.                 END IF
  503.                 'DEMO #4
  504.                 DOPAL RetVal$
  505.                 IF RetVal$ = "Q" THEN
  506.                     GOTO EXITGRANDTOUR
  507.                 END IF
  508.                 'DEMO #5
  509.                 DOBLOCK RetVal$
  510.                 IF RetVal$ = "Q" THEN
  511.                     GOTO EXITGRANDTOUR
  512.                 END IF
  513.                 'DEMO #6
  514.                 DOTEXT RetVal$
  515.                 IF RetVal$ = "Q" THEN
  516.                     GOTO EXITGRANDTOUR
  517.                 END IF
  518.                 'DEMO #7
  519.                 DOSCROLL RetVal$
  520.                 IF RetVal$ = "Q" THEN
  521.                     GOTO EXITGRANDTOUR
  522.                 END IF
  523.                 'DEMO #8
  524.                 DOGIF RetVal$
  525.                 IF RetVal$ = "Q" THEN
  526.                     GOTO EXITGRANDTOUR
  527.                 END IF
  528.                 'DEMO #9
  529.                 DOMOUSE RetVal$
  530.                 IF RetVal$ = "Q" THEN
  531.                     GOTO EXITGRANDTOUR
  532.                 END IF
  533.                 IF RetVal$ = "Q" THEN
  534.                     GOTO EXITGRANDTOUR
  535.                 END IF
  536.                 'DEMO #10
  537.                 DOJOYSTICK RetVal$
  538.                 IF RetVal$ = "Q" THEN
  539.                     GOTO EXITGRANDTOUR
  540.                 END IF
  541.                 'DEMO #11
  542.                 DO2D RetVal$
  543.                 IF RetVal$ = "Q" THEN
  544.                     GOTO EXITGRANDTOUR
  545.                 END IF
  546.                 'DEMO #12
  547.                 DO3D RetVal$
  548. EXITGRANDTOUR:
  549.                 RetVal$ = ""
  550.                 DUMMY = RESTEXT
  551.             CASE IS = 14
  552.                 RES = 1
  553.             CASE IS = 15
  554.                 RES = 2
  555.             CASE IS = 16
  556.                 RES = 3
  557.             CASE IS = 17
  558.                 RES = 4
  559.             CASE IS = 18
  560.                 RES = 5
  561.             CASE ELSE
  562.                 SOUND 100, 5
  563.         END SELECT
  564.         IF RetVal$ = "Q" THEN
  565.             ENDIT = 1
  566.         END IF
  567.     WEND
  568.  
  569.     '*************************************************************************
  570.     '* THAT'S ALL FOLKS! END THE PROGRAM
  571.     '*************************************************************************
  572.     DUMMY = RESTEXT '* FORCE THE VGA PALETTE TO RESET
  573.     VIDEOMODESET STARTVIDEOMODE '*RESTORE THE VIDEOMODE WE STARTED IN
  574.     DUMMY = RESTEXT '* FORCE THE VGA PALETTE TO RESET
  575.     CLEAR
  576.     END
  577.  
  578.  
  579.     '*************************************************************************
  580.     '* DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA
  581.     '*************************************************************************
  582.  
  583.     REM *MAGNIFIER MOUSE CURSOR DATA
  584.     DATA 7,6
  585.     DATA 255,255,255,255,255,7,7,7,7,255,255,255,255,255,255,255
  586.     DATA 255,255,255,7,7,255,255,255,255,7,7,255,255,255,255,255
  587.     DATA 255,255,7,255,255,255,255,255,255,255,255,7,255,255,255,255
  588.     DATA 255,7,255,255,255,255,255,255,255,255,255,255,7,255,255,255
  589.     DATA 255,7,255,255,255,255,255,255,255,255,255,255,7,255,255,255
  590.     DATA 7,255,255,255,255,255,255,255,255,255,255,255,255,7,255,255
  591.     DATA 7,255,255,255,255,255,255,255,255,255,255,255,255,7,255,255
  592.     DATA 7,255,255,255,255,255,255,255,255,255,255,255,255,7,255,255
  593.     DATA 7,255,255,255,255,255,255,255,255,255,255,255,255,7,255,255
  594.     DATA 255,7,255,255,255,255,255,255,255,255,255,255,7,255,255,255
  595.     DATA 255,7,255,255,255,255,255,255,255,255,255,255,7,255,255,255
  596.     DATA 255,7,7,255,255,255,255,255,255,255,255,7,7,255,255,255
  597.     DATA 255,255,7,7,7,255,255,255,255,7,7,7,255,255,255,255
  598.     DATA 255,255,255,7,7,7,7,7,7,8,8,255,255,255,255,255
  599.     DATA 255,255,255,255,255,7,7,7,7,7,8,8,255,255,255,255
  600.     DATA 255,255,255,255,255,255,255,255,255,7,8,8,255,255,255,255
  601.     DATA 255,255,255,255,255,255,255,255,255,255,7,8,8,255,255,255
  602.     DATA 255,255,255,255,255,255,255,255,255,255,7,8,8,255,255,255
  603.     DATA 255,255,255,255,255,255,255,255,255,255,255,7,8,8,255,255
  604.     DATA 255,255,255,255,255,255,255,255,255,255,255,7,8,8,255,255
  605.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,7,8,8,255
  606.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,7,8,8,255
  607.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,7,8,8
  608.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,7,7,7
  609.  
  610.     REM *BIG ARROW MOUSE CURSOR DATA
  611.     DATA 1,1
  612.     DATA 0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255
  613.     DATA 0,15,15,0,0,255,255,255,255,255,255,255,255,255,255,255
  614.     DATA 0,15,15,15,15,0,0,0,255,255,255,255,255,255,255,255
  615.     DATA 0,15,15,15,15,15,15,15,0,0,255,255,255,255,255,255
  616.     DATA 0,15,15,15,15,15,15,15,15,15,0,0,0,255,255,255
  617.     DATA 0,15,15,15,15,15,15,15,15,15,15,15,15,0,0,255
  618.     DATA 0,15,15,15,15,15,15,15,15,15,15,15,15,15,0,255
  619.     DATA 0,15,15,15,15,15,15,15,15,15,15,15,0,0,255,255
  620.     DATA 0,15,15,15,15,15,15,15,15,15,15,0,255,255,255,255
  621.     DATA 0,15,15,15,15,15,15,15,15,0,0,255,255,255,255,255
  622.     DATA 0,15,15,15,15,15,15,15,15,0,255,255,255,255,255,255
  623.     DATA 0,15,15,15,15,15,0,15,15,15,0,255,255,255,255,255
  624.     DATA 0,15,15,15,15,0,0,15,15,15,0,255,255,255,255,255
  625.     DATA 0,15,15,0,0,255,255,0,15,15,15,0,255,255,255,255
  626.     DATA 0,15,0,255,255,255,255,0,15,15,15,0,255,255,255,255
  627.     DATA 0,0,255,255,255,255,255,255,0,15,15,15,0,255,255,255
  628.     DATA 255,255,255,255,255,255,255,255,255,0,15,15,15,0,255,255
  629.     DATA 255,255,255,255,255,255,255,255,255,0,15,15,15,0,255,255
  630.     DATA 255,255,255,255,255,255,255,255,255,255,0,15,15,15,0,255
  631.     DATA 255,255,255,255,255,255,255,255,255,255,255,0,15,15,15,0
  632.     DATA 255,255,255,255,255,255,255,255,255,255,255,0,15,15,15,0
  633.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,0,15,15,0
  634.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0
  635.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  636.  
  637.     REM *STOPWATCH MOUSE CURSOR DATA
  638.     DATA 8,11
  639.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  640.     DATA 255,255,255,255,255,255,15,15,15,15,255,255,255,255,255,255
  641.     DATA 255,255,255,255,255,255,15,15,15,15,255,255,255,255,255,255
  642.     DATA 255,255,255,255,255,255,255,15,15,255,255,255,255,255,255,255
  643.     DATA 255,255,255,255,255,255,15,15,15,15,255,255,255,255,255,255
  644.     DATA 255,255,255,255,15,15,15,7,7,15,15,15,255,255,255,255
  645.     DATA 255,255,255,15,15,7,7,7,7,7,7,15,15,255,255,255
  646.     DATA 255,255,15,15,7,7,7,7,7,7,7,7,15,15,255,255
  647.     DATA 255,15,15,7,0,7,7,7,7,7,7,7,7,15,15,255
  648.     DATA 255,15,7,7,7,0,7,7,7,7,7,7,7,7,15,255
  649.     DATA 15,15,7,7,7,7,0,7,7,7,0,0,7,7,15,15
  650.     DATA 15,7,7,7,7,7,7,0,0,0,7,7,7,7,7,15
  651.     DATA 15,7,7,7,7,7,7,0,0,7,7,7,7,7,7,15
  652.     DATA 15,15,7,7,7,7,7,7,7,7,7,7,7,7,15,15
  653.     DATA 255,15,7,7,7,7,7,7,7,7,7,7,7,7,15,255
  654.     DATA 255,15,15,7,7,7,7,7,7,7,7,7,7,15,15,255
  655.     DATA 255,255,15,15,7,7,7,7,7,7,7,7,15,15,255,255
  656.     DATA 255,255,255,15,15,7,7,7,7,7,7,15,15,255,255,255
  657.     DATA 255,255,255,255,15,15,15,7,7,15,15,15,255,255,255,255
  658.     DATA 255,255,255,255,255,255,15,15,15,15,255,255,255,255,255,255
  659.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  660.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  661.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  662.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  663.  
  664. REM $DYNAMIC
  665.     SUB GETKEY (KEY$)
  666.  
  667.     '*************************************************************************
  668.     '* THIS ROUTINE WAITS FOR A KEY STROKE
  669.     '*************************************************************************
  670.  
  671.     FOR A = 0 TO 7 '* CLEAR THE KBD BUFFER
  672.         A$ = INKEY$
  673.     NEXT A
  674.  
  675.     SOUND 700, .75
  676.     A$ = ""
  677.     WHILE A$ = ""
  678.         A$ = INKEY$
  679.         IF A$ = "q" THEN
  680.             A$ = "Q"
  681.         END IF
  682.         IF A$ = "s" THEN
  683.             A$ = "S"
  684.         END IF
  685.     WEND
  686.     KEY$ = A$
  687.  
  688.     END SUB
  689.  
  690.